package cn.zebra.dev.member.module.address.service;

import cn.zebra.dev.ibatis.plus.service.IService;
import cn.zebra.dev.ibatis.plus.utils.PageUtils;
import cn.zebra.dev.member.module.address.entity.MemberAddressEntity;

import java.util.Map;

/**
 * 用户地址表
 */
public interface MemberAddressService extends IService<MemberAddressEntity> {
    /**
     * 分页查询用户地址
     *
     * @param params -key(查询参数)
     *               memberId   根据用户id查询
     *               page   页数
     *               limit 每页大小
     * @return 分页信息
     */
    PageUtils<MemberAddressEntity> queryPage(Map<String, Object> params);

    /**
     * 判断用户收获地址是否为空
     *
     * @param memberId 用户id
     * @return 如果用户无可用收获地址 则为空
     */
    Boolean isEmptyMemberAddress(Long memberId);

    /**
     * 取消用户下所有地址的默认状态
     *
     * @param memberId 用户id
     */
    void cancelAllDefault(Long memberId);

    /**
     * 查询用户地址详情
     *
     * @param id 主键id
     * @return 用户地址信息
     */
    @Override
    MemberAddressEntity findById(Long id);

    /**
     * 根据用户地址id和用户id查找用户地址
     *
     * @param id       用户地址id(主键id)
     * @param memberId 用户id
     * @return 用户地址对象
     */
    MemberAddressEntity findByIdAndMemberId(Long id, Long memberId);

    /**
     * 根据用户id查找用户默认地址详情
     *
     * @param memberId 用户id
     * @return 用户默认地址详情
     */
    MemberAddressEntity findDefaultAddressByMemberId(Long memberId);
}
